package cn.hznc;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil;
import cn.hznc.configuration.MinioHelper;
import cn.hznc.constant.UrlConstant;
import cn.hznc.domain.entity.*;
import cn.hznc.dto.AllotEmployeeImport;
import cn.hznc.mapper.CourseMapper;
import cn.hznc.utils.CommonUtil;
import cn.hznc.vo.*;
import cn.nerc.nclink.core.communication.DeviceClient;
import cn.nerc.nclink.core.general.InvalidException;
import cn.nerc.nclink.core.general.Operation;
import cn.nerc.nclink.core.message.QueryRequestItem;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.util.StringUtil;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import org.apache.commons.lang.StringUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @Author：Administrator
 * @Date：2023/4/22 20:40
 */
//@RunWith(SpringRunner.class)
@SpringBootTest
public class Demo {
     @Autowired
     private MinioHelper minioHelper;

     @Resource
     private CourseMapper courseMapper;

    private static final ConcurrentHashMap<String, Double> toolLifeMap = new ConcurrentHashMap<>();

    @Test
    public void Date() throws ParseException {
        String dateStr = "2024-1-14";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date format = simpleDateFormat.parse(dateStr);
        String format1 = simpleDateFormat.format(format);
        System.out.println("simpleDateFormat.format(format) = " + simpleDateFormat.format(format));
    }

    @Test
    public void test1() throws MqttException, InvalidException, TimeoutException {
//        DeviceClient deviceClient =
//                new DeviceClient(, "tcp://192.168.32.107:1883", null, null, null);
//        deviceClient.connect();
//        String id = deviceClient.getIdOf("/NC_LINK_ROOT/MACHINE/CONTROLLER/TOOL_PARAM");
    }

    @Test
    public void test2(){
//        Map<String , String> paramMap = new HashMap<>();
//        Map<String , String> headerMap = new HashMap<>();
//        paramMap.put("Code" , "cd001");
//        paramMap.put("Digest" , "0dd03b5570b09c9d8deb4bdbfd9253cc");
//        Map<String , Object> dataMap = new HashMap<>();
//        dataMap.put("Gtype" , UrlConstant.ICABINET_FEEDING_SYNC_GTYPE);
//        //获取时间map
//        Map<String, String> dateMap = CommonUtil.minusTime24h();
//        dataMap.put("Data1" , dateMap.get("Date1"));
//        dateMap.put("Date2" , dateMap.get("Date2"));
//        paramMap.put("Data" , JSONObject.toJSONString(dataMap));
//        String post = CommonUtil.postMap(UrlConstant.ICABINET_FEEDING_SYNC_URL , headerMap , paramMap);
//        //String post = HttpUtil.post("http://192.168.32.123:5086/iVapi", paramMap);
//        System.out.println("post = " + post);
        Map<String , Object> paramMap = new HashMap<>();
        Map<String , Object> heardMap = new HashMap<>();
        paramMap.put("Code" , "cd001");
        //paramMap.put("Uid" , "");
        paramMap.put("Digest" , "0dd03b5570b09c9d8deb4bdbfd9253cc");
        Map<String , String> dataMap = new HashMap<>();
        dataMap.put("Gtype" , UrlConstant.ICABINET_FEEDING_SYNC_GTYPE);
        //获取时间map
        //Map<String, String> dateMap = CommonUtil.minusTime24h();
        //Map<String, String> dateMap = CommonUtil.minusTime24h();
        dataMap.put("Date1" , "2023-01-01");
        dataMap.put("Date2" , "2023-03-09");
        paramMap.put("Data" , JSONObject.toJSONString(dataMap));
        String post = HttpUtil.post("http://192.168.32.123:5086/iVapi" , paramMap);
        JSONObject jsonObject = JSONObject.parseObject(post);
        Object o = jsonObject.get("data");
        JSONArray dataArray = JSONArray.parseArray(o.toString());
        for (int i = 0; i < dataArray.size(); i++) {
            Object o1 = dataArray.get(i);
            JSONArray data1Array = JSONArray.parseArray(o1.toString());
            System.out.println("data1Array.get(0) = " +  data1Array.get(7));
        }
        //System.out.println("a.get(\"stock\") = " + a.get("stock"));
        //List<List<Map<String , Object>>> data =  (List<List<Map<String , Object>>>)jsonObject.get("data");
        //System.out.println("stockS = " + stockS);
        //System.out.println("data = " + data);
        System.out.println("jsonObject = " + jsonObject);
        System.out.println("post = " + post);
    }

    @Test
    public void test4(){
        List<String> strings = new ArrayList<>();
        strings.add("1");
        List<Integer> collect = strings.stream().filter(s -> !s.equals("1")).map(Integer::parseInt).collect(Collectors.toList());
        System.out.println("collect = " + collect);

    }

    @Test
    public void test14(){
        Map<String , Object> dataMap = new HashMap<>();
        List<List<Object>> data = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            List<Object> a = new ArrayList<>();
            a.add("加料单");
            a.add(i);
            a.add("刀具组");
            data.add(a);
        }
        dataMap.put("success" , "true");
        dataMap.put("data" , data);
        String s = JSONObject.toJSONString(dataMap);
        System.out.println("s = " + s);
        JSONObject jsonObject = JSONObject.parseObject(s);
        System.out.println("jsonObject = " + jsonObject);
        List<List<Object>> parseData  = (List<List<Object>>) jsonObject.get("data");
        parseData.forEach(data1 ->{
            System.out.println("data1 = " + data1.get(1));
        });
    }


    @Test
    public void test3(){
        OrderEntity orderEntity = new OrderEntity();
        OrderEntity orderEntity1 = new OrderEntity();
        OrderEntity orderEntity2 = new OrderEntity();
//        orderEntity.setTaskId("123");
//        orderEntity.setPlanNumber(1);
//        orderEntity1.setTaskId("123");
//        orderEntity1.setPlanNumber(2);
//        orderEntity2.setTaskId("1233");
//        Set<OrderEntity> orderEntitySet = new HashSet<>();
//        orderEntitySet.add(orderEntity);
//        orderEntitySet.add(orderEntity1);
//        orderEntitySet.add(orderEntity2);
        System.out.println();
        //System.out.println(dateList.get(0));
    }

    @Test
    public void test6() throws MqttException, InvalidException, TimeoutException, InterruptedException {
        DeviceClient deviceClient =
                new DeviceClient("1000E0DC000011", "tcp://192.168.32.107:1883", null, null, null);
        deviceClient.connect();
        String id = deviceClient.getIdOf("/NC_LINK_ROOT/MACHINE/CONTROLLER/TOOL_PARAM");
        List<Object> length = deviceClient.easyQuery(10000, new QueryRequestItem.Builder().id(id).operation(Operation.GET_LENGTH).build());
        int i = Integer.parseInt(((List)length.get(0)).get(0).toString());
        //先Operation.GET_LENGTH取长度
        List<Object> result = deviceClient.easyQuery(10000, new QueryRequestItem.Builder()
                .id(id).addIndexRange(0, i-1).build());
        System.out.println("result = " + result);
        System.out.println(JSON.toJSONString(result));
        deviceClient.close();
    }

    @Test
    public void test32() throws ParseException, InterruptedException, IllegalAccessException, MqttException, InvalidException, TimeoutException {
        DeviceClient deviceClient =
                new DeviceClient("1000E0DC00025E", "tcp://192.168.32.107:1883", null, null, null);
        deviceClient.connect();
//        //获取程序
//        String programId = deviceClient.getIdOf("/NC_LINK_ROOT/MACHINE/FEED_OVERRIDE");
//        //String programId = deviceClient.getIdOf("/NC_LINK_ROOT/MACHINE/FEED_SPEED");
//        Object o = deviceClient.easyQuery(3000,
//                new QueryRequestItem.Builder().id(programId).operation(Operation.GET_VALUE).build());
//        System.out.println("o.toString() = " + CommonUtil.getProgramString(o));
//
//        String id = deviceClient.getIdOf("/NC_LINK_ROOT/MACHINE/STATUS");
//        List<Object> result = deviceClient.easyQuery(2000, new QueryRequestItem.Builder()
//                .id(id).build());
//        Object statusObject = deviceClient.easyQuery(3000,
//                new QueryRequestItem.Builder().id(id).operation(Operation.GET_VALUE).build());
//        System.out.println("o.toString() = " + statusObject.toString());
        //获取主轴转速
        String id = deviceClient.getIdOf("/NC_LINK_ROOT/MACHINE/SPINDLE_SPEED");
//        List<Object> result = deviceClient.easyQuery(2000, new QueryRequestItem.Builder()
//                .id(id).build());
        Object statusObject = deviceClient.easyQuery(3000,
                new QueryRequestItem.Builder().id(id).operation(Operation.GET_VALUE).build());
        System.out.println("o.toString() = " + statusObject.toString());
    }

    @Test
    public void test28() throws MqttException, InvalidException, TimeoutException, InterruptedException {
        DeviceClient deviceClient =
                new DeviceClient("1000E0DC0001DB", "tcp://192.168.32.107:1883", null, null, null);
        deviceClient.connect();
        String id = deviceClient.getIdOf("1000E0DC0001DC");
        Object o = deviceClient.easyQuery(3000,
                new QueryRequestItem.Builder().id(id).operation(Operation.GET_VALUE).build());
        //List partCountList = (List)o;
        //int partCount = Integer.parseInt(((List) partCountList.get(0)).get(0).toString());
        deviceClient.close();
        System.out.println("o = " + o);
    }


    @Test
    public void test7(){
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add("6");
        list.add("7");
        List<List<String>> listGroup = new ArrayList<List<String>>();
        int listSize = list.size();
        //子集合的长度
        int toIndex = 2;
        for (int i = 0; i < list.size(); i += 2) {
            if (i + 2 > listSize) {
                toIndex = listSize - i;
            }
            List<String> newList = list.subList(i, i + toIndex);
            listGroup.add(newList);
        }
        System.out.println("listGroup = " + listGroup);
    }

    @Test
    public void test8(){
        List<AssembleLogVo> list = new ArrayList<>();
        AssembleLogVo assembleLogVo = new AssembleLogVo();
        AssembleLogVo assembleLogVo1 = new AssembleLogVo();
        //AssembleLogVo assembleLogVo = new AssembleLogVo();
        assembleLogVo.setOperator("张三");
        assembleLogVo.setCreateTime(new Date());
        assembleLogVo1.setOperator("li");
        assembleLogVo1.setCreateTime(new Date());
        list.add(assembleLogVo);
        list.add(assembleLogVo1);
        //list.add("7");
        System.out.println("listGroup = " + JSONArray.toJSONString(list));
    }

    @Test
    public void test9() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        c.add(Calendar.DATE, - 7);
        Date monday = c.getTime();
        String preMonday = sdf.format(monday);
        System.out.println("preMonday = " + preMonday);

    }

    @Test
    public void test10() throws ParseException {
        Map<String , Object> pa = new HashMap<>();
        List<String> list = new ArrayList<>();
        List<String> list1 = new ArrayList<>();
        list.add("88.222.55555.TOOL4330001692073f31686969504242");
        list1.add("88.222.55555.TOOL4330001692073f31686969504242");
        pa.put("shankType" ,list);
        pa.put("toolType" ,list1);
        String s = JSONObject.toJSONString(pa);
        JSONObject jsonObject = JSONObject.parseObject(s);
        List<String> list2 = (List<String>) jsonObject.get("A");
        System.out.println("jsonObject.get(\"A\") = " + s);
        //System.out.println("jsonObject = " + jsonObject);

    }

    @Test
    public void test11() throws ParseException, InterruptedException {
       Map<String , Object> paramMap = new HashMap<>();;
//        paramMap.put("address","COM6");
//        paramMap.put("baudRate",115200);
//        paramMap.put("dataBits",8);
//        paramMap.put("stopBits",1);
//        paramMap.put("parity","N");
//        paramMap.put("slaveId",2);
//        paramMap.put("timeout",5);
//        String post = HttpUtil.post("http://localhost:33123/Modbus/Open/RTU", paramMap);
//        JSONObject jsonObject = JSONObject.parseObject(post);
//        JSONObject data = JSONObject.parseObject(jsonObject.get("data").toString());
//        Object connectionId = data.get("connectionId");
//        System.out.println("connectionId = " + connectionId.toString());
//        System.out.println("data = " + data);
//        System.out.println("jsonObject = " + jsonObject);
//        System.out.println("post = " + post);
        //读取地址值
        paramMap.put("connectionId" , "b2a3e1c8-a816-4a36-b730-a8e1e90ccbf5");
        paramMap.put("functionCode" , 16);
        paramMap.put("address" , 0);
        paramMap.put("quantity" , 3);
        List<Integer> list = new ArrayList<>();
        list.add(48);
        list.add(49);
        list.add(50);
        paramMap.put("values" , list);
        String posts = HttpUtil.post("http://localhost:33123/Modbus/Function", JSONObject.toJSONString(paramMap));
        System.out.println(JSONObject.toJSONString(paramMap));
        System.out.println("post = " + posts);
    }

    @Test
    public void test12() throws ParseException, InterruptedException {
        String sn = "88.222.ea1";
        List<Integer> numList = new ArrayList<>();
        for (int i = 0; i < sn.length(); i++) {
            int ascIINum = (int)sn.charAt(i);
            numList.add(ascIINum);
        }
        System.out.println("numList = " + numList);
    }

    @Test
    public void test13() throws ParseException, InterruptedException {
//        HashMap<String , String> toolCodeMap  = new HashMap<>();
//        toolCodeMap.put("A001B001" , "01");
//        toolCodeMap.put("A001B002" , "02");
//        toolCodeMap.put("A001B003" , "03");
//        String sn = "A001B002C001D001";
//        String sn1 = "A001B001C002";
//        final String[] toolCode = {""};
//        toolCodeMap.forEach((key,value) ->{
//            if (StringUtil.isNotEmpty(sn) && sn.startsWith(key)) {
//                toolCode[0] = value;
//            }
//        });
//        System.out.println(toolCode[0]);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        int hour = -48;
        Calendar calendar = Calendar.getInstance();
        String thisTime = sdf.format(calendar.getTime());
        System.out.println("当前时间为：" + thisTime);
        calendar.add(Calendar.HOUR, hour);
        System.out.println(calendar.getTime());
    }

    @Test
    public void test15() throws ParseException, InterruptedException {
        List<OrderEntity> stringList = new ArrayList<>();
        OrderEntity o1 = new OrderEntity();
        OrderEntity o2 = new OrderEntity();
        OrderEntity o3 = new OrderEntity();
        OrderEntity o4 = new OrderEntity();
        OrderEntity o5 = new OrderEntity();
        o1.setTaskId("22221");
        o2.setTaskId("19991");
        o3.setTaskId("2221");
        o4.setTaskId("2321");
        o5.setTaskId("21221");
        stringList.add(o4);
        stringList.add(o1);
        stringList.add(o2);
        stringList.add(o5);
        stringList.add(o3);
        List<String> collect = stringList.stream().sorted(Comparator.comparing(OrderEntity::getTaskId , Comparator.comparing(Integer::valueOf))).map(OrderEntity::getTaskId).collect(Collectors.toList());
        System.out.println(collect);
    }

    @Test
    public void test16() throws ParseException, InterruptedException {
        List<String> stringList = new ArrayList<>();
        List<String> stringsList = new ArrayList<>();
        stringList.add("T16");
        stringList.add("T17");
        stringsList.add("T17");
        System.out.println(!stringsList.contains("T16"));
        //stringsList = stringsList.stream().filter(s ->!stringList.contains(s)).collect(Collectors.toList());
        Iterator<String> iterator = stringList.iterator();
        while(iterator.hasNext()) {
            if(stringsList.contains(iterator.next())) {
                iterator.remove();
            }
        }
        System.out.println("stringList = " + stringList);
    }

    @Test
    public void test17() throws ParseException, InterruptedException{
        List<String> stringList = new ArrayList<>();
        List<String> stringsList = new ArrayList<>();
        stringList.add("T28");
        stringList.add("T16");
        stringList.add("T17");
        List<String> filter = stringList.stream().filter(s -> s.contains("T1")).collect(Collectors.toList());
        List<String> unFilter = stringList.stream().filter(s -> !s.contains("T1")).collect(Collectors.toList());
//        for (int i = 0; i < stringList.size(); i++) {
//            if(stringList.get(i).contains("T1")){
//                String a = stringList.get(i);
//                stringList.set(i , stringList.get(0));
//                stringList.set(0, a);
//            }
//        }
        filter.addAll(unFilter);
        System.out.println("filter = " + stringList);
        System.out.println("filter = " + filter);
        System.out.println("unFilter = " + unFilter);
    }

    @Test
    public void test18() throws ParseException, InterruptedException{
       List<String> strings = new ArrayList<>();
       strings.add("B1");
       strings.add("B10");
       strings.add("B11");
       strings.add("B2");
       strings.add("B3");
        strings = strings.stream().sorted(Comparator.comparingInt(s -> Integer.parseInt(s.substring(1)))).collect(Collectors.toList());
        System.out.println("strings = " + strings);
    }

    @Test
    public void test19() throws ParseException, InterruptedException{
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2022);
        cal.set(Calendar.MONTH, 1);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        Date start = cal.getTime();
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date end = cal.getTime();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("Start: " + simpleDateFormat.format(start));
        System.out.println("End: " + simpleDateFormat.format(end));

    }

    @Test
    public void test20() throws ParseException, InterruptedException{
        String s = "8:00~16:00";
        String[] split = s.split("~");
        System.out.println("recordEntities.contains(b) = "+ Arrays.toString(split));
    }

    @Test
    public void test21() throws ParseException, InterruptedException, IllegalAccessException {
        AllotEmployeeImport allotEmployeeImport = new AllotEmployeeImport();
        allotEmployeeImport.setOneUp("11");
        Field[] declaredFields = allotEmployeeImport.getClass().getDeclaredFields();
        for (int i = 0; i < declaredFields.length; i++) {
            declaredFields[i].setAccessible(true);
            if(ObjectUtil.isNotNull(declaredFields[i].get(allotEmployeeImport))){
                String s = declaredFields[i].get(allotEmployeeImport).toString();
                System.out.println("declaredField.get(allotEmployeeImport) = " + declaredFields[i].get(allotEmployeeImport));
            }
        }
//        for (Field declaredField : declaredFields) {
//            declaredField.setAccessible(true);
//            System.out.println("declaredField.get(allotEmployeeImport) = " + declaredField.get(allotEmployeeImport));
//        }
    }

    @Test
    public void test22() throws ParseException, InterruptedException, IllegalAccessException {
        List<String> everyDay = CommonUtil.findEveryDay("2023-08-10", "2023-08-25");
        Calendar cal = Calendar.getInstance();
        String s = everyDay.get(0);
        String[] split = s.split("-");
        cal.set(Calendar.YEAR , Integer.parseInt(split[0]));
        cal.set(Calendar.MONTH , Integer.parseInt(split[1]));
        cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(split[2]));
        cal.set(Calendar.HOUR_OF_DAY, 8);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("sdf = " + sdf.format(cal.getTime()));
        //System.out.println("date = " + date);
        //System.out.println("date = " + date);
    }

    @Test
    public void test23() throws ParseException, InterruptedException, IllegalAccessException {
        for (int i = 0; i < 10; i++) {
            if(i == 5){
                throw new RuntimeException();
            }
            System.out.println("i = " + i);
        }
    }

    @Test
    public void test24() throws ParseException, InterruptedException, IllegalAccessException {
//        List<LocationNumVo> list = new ArrayList<>();
//        LocationNumVo locationNumVo1 = new LocationNumVo();
//        locationNumVo1.setRow(2);
//        locationNumVo1.setColumn(1);
//        LocationNumVo locationNumVo2 = new LocationNumVo();
//        locationNumVo2.setRow(3);
//        locationNumVo2.setColumn(2);
//        LocationNumVo locationNumVo3 = new LocationNumVo();
//        locationNumVo3.setRow(1);
//        locationNumVo3.setColumn(2);
//        LocationNumVo locationNumVo4 = new LocationNumVo();
//        locationNumVo4.setRow(3);
//        locationNumVo4.setColumn(1);
//        list.add(locationNumVo1);
//        list.add(locationNumVo2);
//        list.add(locationNumVo3);
//        list.add(locationNumVo4);
//        List<LocationNumVo> collect = list.stream().sorted(Comparator.comparing(LocationNumVo::getRow).thenComparing(LocationNumVo::getColumn)).collect(Collectors.toList());
//        List<Integer> collect1 = collect.stream().map(LocationNumVo::getRow).collect(Collectors.toList());
//        System.out.println("collect = " + collect1);
        String s = "[{id=1, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=60, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=128.031, length_abrasion=0, max_time_usage=150, name=1324, radius=0, radius_abrasion=0, time_usage=125.768533}, {id=2, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=37, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=109.163, length_abrasion=0, max_time_usage=40, name=107, radius=0, radius_abrasion=0, time_usage=23.7104}, {id=3, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=76, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=107.816, length_abrasion=0, max_time_usage=60, name=1804, radius=0.825, radius_abrasion=0, time_usage=40.5813333}, {id=4, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=22, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=108.604, length_abrasion=0, max_time_usage=50, name=9107251, radius=0, radius_abrasion=0, time_usage=10.7609333}, {id=5, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=51, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=109.641, length_abrasion=0, max_time_usage=100, name=9128251, radius=0, radius_abrasion=0, time_usage=12.2746667}, {id=6, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=43, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0.015, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=101.565, length_abrasion=0, max_time_usage=35, name=9104251, radius=0, radius_abrasion=0, time_usage=0.715733333}, {id=7, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=56, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=156.308, length_abrasion=0, max_time_usage=50, name=137, radius=10, radius_abrasion=0, time_usage=0.895333333}, {id=8, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=12, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=131.02, length_abrasion=0, max_time_usage=60, name=9023431, radius=0, radius_abrasion=0, time_usage=48.7610667}, {id=9, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=580, manual_turn_cutting_rate=256, position=79, relief_angle=180, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=157.382, length_abrasion=0, max_time_usage=12, name=BLUM, radius=3, radius_abrasion=0, time_usage=5.34786667}, {id=10, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=54, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=112.78, length_abrasion=0, max_time_usage=50, name=1833, radius=0, radius_abrasion=0, time_usage=12.2777333}, {id=11, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=33, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=105.184, length_abrasion=0, max_time_usage=40, name=9116201, radius=0, radius_abrasion=0, time_usage=4.93266667}, {id=12, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=120, manual_turn_cutting_rate=256, position=34, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=0, length_abrasion=0, max_time_usage=0, name=XXXX, radius=0, radius_abrasion=0, time_usage=0}, {id=13, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=220, manual_turn_cutting_rate=256, position=10, relief_angle=90, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=122.098, length_abrasion=0, max_time_usage=60, name=XXXXX, radius=1, radius_abrasion=0, time_usage=7.08413333}, {id=14, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=21, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=107.105, length_abrasion=0, max_time_usage=80, name=1284, radius=4, radius_abrasion=0, time_usage=4.2184}, {id=15, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=110, manual_turn_cutting_rate=256, position=42, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.691, length_abrasion=0, max_time_usage=60, name=9151151, radius=0, radius_abrasion=0, time_usage=51.6256}, {id=16, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=110, manual_turn_cutting_rate=256, position=68, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=99.961, length_abrasion=0, max_time_usage=60, name=XXXX, radius=0, radius_abrasion=0, time_usage=13.864}, {id=17, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=23, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=133.689, length_abrasion=0, max_time_usage=0, name=XXXX, radius=2, radius_abrasion=0, time_usage=0}, {id=20, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=58, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=101.169, length_abrasion=0, max_time_usage=80, name=1244, radius=0, radius_abrasion=0, time_usage=27.7289333}, {id=21, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=240, manual_turn_cutting_rate=256, position=6, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=113.344, length_abrasion=0, max_time_usage=20, name=54, radius=0, radius_abrasion=0, time_usage=6.05053333}, {id=23, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=14, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=130.136, length_abrasion=0, max_time_usage=100, name=1001, radius=0, radius_abrasion=0, time_usage=57.9370667}, {id=25, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=41, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=105.999, length_abrasion=0, max_time_usage=60, name=9115201, radius=0, radius_abrasion=0, time_usage=29.3889333}, {id=26, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=50, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.191, length_abrasion=0, max_time_usage=30, name=XXXX, radius=0, radius_abrasion=0, time_usage=0}, {id=29, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=120, manual_turn_cutting_rate=256, position=5, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=0, length_abrasion=0, max_time_usage=0, name=XXXXXXXX, radius=0, radius_abrasion=0, time_usage=0}, {id=30, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=31, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=131.853, length_abrasion=0, max_time_usage=100, name=xxxxx, radius=0, radius_abrasion=0, time_usage=60.1797333}, {id=31, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=32, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.209, length_abrasion=0, max_time_usage=100, name=9111251, radius=0, radius_abrasion=0, time_usage=24.2449333}, {id=33, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=67, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=123.967, length_abrasion=0, max_time_usage=0, name=XXXXX, radius=1.05, radius_abrasion=0, time_usage=0}, {id=38, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=120, manual_turn_cutting_rate=256, position=4, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=109.582, length_abrasion=0, max_time_usage=100, name=XXXXXXXXX, radius=0, radius_abrasion=0, time_usage=75.6394667}, {id=39, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=0, position=57, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=157.324, length_abrasion=0, max_time_usage=40, name=XXX, radius=3, radius_abrasion=0, time_usage=0}, {id=42, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=120, manual_turn_cutting_rate=256, position=47, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=101.963, length_abrasion=0, max_time_usage=30, name=XXXX, radius=0, radius_abrasion=0, time_usage=16.5976}, {id=43, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=10, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=64, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=107.915, length_abrasion=0, max_time_usage=60, name=1904, radius=0.925, radius_abrasion=0, time_usage=38.7768}, {id=44, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=110, manual_turn_cutting_rate=256, position=53, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=100.079, length_abrasion=0, max_time_usage=60, name=9150151, radius=0, radius_abrasion=0, time_usage=10.254}, {id=45, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=18, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=-0.03, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=125.394, length_abrasion=0, max_time_usage=100, name=9132351, radius=0, radius_abrasion=0, time_usage=0.516}, {id=46, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=2, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.367, length_abrasion=0, max_time_usage=50, name=124, radius=0, radius_abrasion=0, time_usage=29.6881333}, {id=47, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=72, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=105.232, length_abrasion=0, max_time_usage=60, name=9119251, radius=0, radius_abrasion=0, time_usage=5.29413333}, {id=50, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=45, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=142.739, length_abrasion=0, max_time_usage=50, name=9133501, radius=0, radius_abrasion=0, time_usage=38.6330667}, {id=52, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=10, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=110, manual_turn_cutting_rate=256, position=62, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=158.581, length_abrasion=0, max_time_usage=100, name=XXXX, radius=0, radius_abrasion=0, time_usage=0}, {id=53, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=110, manual_turn_cutting_rate=256, position=7, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=-0.015, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=101.077, length_abrasion=0.025, max_time_usage=60, name=9150251, radius=0, radius_abrasion=0, time_usage=54.4708}, {id=54, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=75, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=122.712, length_abrasion=0, max_time_usage=100, name=1301, radius=0, radius_abrasion=0, time_usage=69.3861333}, {id=55, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=71, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0.05, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=113.014, length_abrasion=0, max_time_usage=30, name=175, radius=0.005, radius_abrasion=0, time_usage=21.1056}, {id=57, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=61, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0.03, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=111.331, length_abrasion=0, max_time_usage=40, name=XXXX, radius=0, radius_abrasion=0, time_usage=0.542133333}, {id=58, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=65, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=101.762, length_abrasion=0, max_time_usage=45, name=XXX, radius=0, radius_abrasion=0, time_usage=16.1948}, {id=59, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=29, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=-0.01, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=110.238, length_abrasion=0, max_time_usage=50, name=1763, radius=0, radius_abrasion=0, time_usage=8.72626667}, {id=60, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=17, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=123.796, length_abrasion=0, max_time_usage=70, name=XXXX, radius=0, radius_abrasion=0, time_usage=37.4364}, {id=61, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=40, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=105.475, length_abrasion=0, max_time_usage=60, name=9124251, radius=0, radius_abrasion=0, time_usage=9.324}, {id=63, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=2, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=145, manual_turn_cutting_rate=256, position=1, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=100.502, length_abrasion=0, max_time_usage=8, name=xxxxxxx, radius=0, radius_abrasion=0, time_usage=3.39746667}, {id=64, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=66, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0.05, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=105.107, length_abrasion=0, max_time_usage=30, name=9108301, radius=0, radius_abrasion=0, time_usage=15.7777333}, {id=65, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=70, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.334, length_abrasion=0, max_time_usage=100, name=1289201, radius=0, radius_abrasion=0, time_usage=12.3702667}, {id=66, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=44, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=107.427, length_abrasion=0, max_time_usage=60, name=17, radius=0.75, radius_abrasion=0, time_usage=35.2229333}, {id=67, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=8, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=138.899, length_abrasion=0, max_time_usage=60, name=9029501, radius=0, radius_abrasion=0, time_usage=4.54693333}, {id=68, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=110, manual_turn_cutting_rate=256, position=55, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.023, length_abrasion=0, max_time_usage=100, name=9152201, radius=0, radius_abrasion=0, time_usage=8.23613333}, {id=69, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=120, manual_turn_cutting_rate=256, position=59, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=133.639, length_abrasion=0, max_time_usage=80, name=2701, radius=0, radius_abrasion=0, time_usage=24.0598667}, {id=70, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=120, manual_turn_cutting_rate=256, position=69, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=107.322, length_abrasion=0, max_time_usage=30, name=9105201, radius=1.25, radius_abrasion=0, time_usage=6.51453333}, {id=71, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=39, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=109.9, length_abrasion=0, max_time_usage=60, name=1753, radius=0.015, radius_abrasion=0, time_usage=28.1086667}, {id=72, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=220, manual_turn_cutting_rate=256, position=46, relief_angle=90, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=123.601, length_abrasion=0, max_time_usage=100, name=1, radius=2.5, radius_abrasion=0, time_usage=85.7472}, {id=74, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=220, manual_turn_cutting_rate=256, position=20, relief_angle=90, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=0, length_abrasion=0, max_time_usage=0, name=XXXXXXXX, radius=0, radius_abrasion=0, time_usage=0}, {id=75, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=11, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.901, length_abrasion=0, max_time_usage=30, name=9106201, radius=0, radius_abrasion=0, time_usage=8.97106667}, {id=76, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=145, manual_turn_cutting_rate=256, position=74, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.346, length_abrasion=0, max_time_usage=8, name=54041, radius=0, radius_abrasion=0, time_usage=1.35373333}, {id=77, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=19, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=0, length_abrasion=0, max_time_usage=0, name=XXXXXXXX, radius=0, radius_abrasion=0, time_usage=0}, {id=79, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=9, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=122.093, length_abrasion=0, max_time_usage=70, name=20, radius=0, radius_abrasion=0, time_usage=2.97413333}, {id=80, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=15, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=115.647, length_abrasion=0, max_time_usage=60, name=1793, radius=0, radius_abrasion=0, time_usage=9.9668}, {id=81, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=16, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0.01, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=108.528, length_abrasion=0, max_time_usage=50, name=176, radius=0, radius_abrasion=0, time_usage=20.0409333}, {id=82, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=25, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=102.409, length_abrasion=0, max_time_usage=30, name=xxx, radius=0, radius_abrasion=0, time_usage=0}, {id=83, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=73, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=133.941, length_abrasion=0, max_time_usage=100, name=9027351, radius=0, radius_abrasion=0, time_usage=91.2326667}, {id=85, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=145, manual_turn_cutting_rate=256, position=36, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=100.062, length_abrasion=0, max_time_usage=6, name=5004201, radius=0, radius_abrasion=0, time_usage=0}, {id=86, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=35, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=123.191, length_abrasion=0, max_time_usage=100, name=1031, radius=0, radius_abrasion=0, time_usage=48.3594667}, {id=87, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=145, manual_turn_cutting_rate=256, position=30, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=104.185, length_abrasion=0, max_time_usage=8, name=5404, radius=0, radius_abrasion=0, time_usage=1.2456}, {id=88, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=48, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.876, length_abrasion=0, max_time_usage=60, name=XXXXXX, radius=0, radius_abrasion=0, time_usage=19.9504}, {id=89, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=27, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=109.141, length_abrasion=0, max_time_usage=50, name=179, radius=0, radius_abrasion=0, time_usage=44.6810667}, {id=90, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=26, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=130.932, length_abrasion=0, max_time_usage=60, name=XXXX, radius=0, radius_abrasion=0, time_usage=9.06066667}, {id=91, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=13, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=111.203, length_abrasion=0, max_time_usage=30, name=183, radius=0, radius_abrasion=0, time_usage=8.474}, {id=92, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=38, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=130.301, length_abrasion=0, max_time_usage=60, name=22, radius=0, radius_abrasion=0, time_usage=21.8509333}, {id=93, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=77, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=117.994, length_abrasion=0, max_time_usage=0, name=xxxxxxx, radius=0, radius_abrasion=0, time_usage=0}, {id=94, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=3, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=125.821, length_abrasion=0, max_time_usage=60, name=25, radius=1.65, radius_abrasion=0, time_usage=37.4241333}, {id=95, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=24, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=122.074, length_abrasion=0, max_time_usage=30, name=95, radius=0, radius_abrasion=0, time_usage=23.0796}, {id=98, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=0, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=110, manual_turn_cutting_rate=256, position=63, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=106.902, length_abrasion=0, max_time_usage=0, name=XXXX, radius=0, radius_abrasion=0, time_usage=0}, {id=99, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=3, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=200, manual_turn_cutting_rate=256, position=1, relief_angle=118, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=131.077, length_abrasion=0, max_time_usage=50, name=24, radius=0, radius_abrasion=0, time_usage=15.3450667}, {id=100, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=80, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=101.575, length_abrasion=0, max_time_usage=120, name=1243251, radius=0, radius_abrasion=0, time_usage=85.6714667}, {id=101, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=155, manual_turn_cutting_rate=256, position=49, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=110.211, length_abrasion=0, max_time_usage=60, name=184, radius=0.01, radius_abrasion=0, time_usage=4.0588}, {id=102, key_value={adapter_length_1=0, adapter_length_2=0, adapter_length_3=0, alarm_time_usage=5, geometry_angle_1=0, geometry_angle_2_for_tapered_milling_tools=0, geometry_corner_radius=0, geometry_length_1=0, geometry_length_3=0, geometry_length_4=0, geometry_length_5=0, geometry_tool_point_direction=7, geometry_tool_type=100, manual_turn_cutting_rate=256, position=52, relief_angle=0, wear_angle_1=0, wear_angle_2_for_tapered_milling_tools=0, wear_length_2=0, wear_length_3=0, wear_length_5=0, wear_proj_length_k=0, wear_slot_width_b_rounding_radius=0}, length=107.233, length_abrasion=0, max_time_usage=35, name=9108202, radius=0, radius_abrasion=0, time_usage=9.08986667}]";
        //String s1 = s.replaceAll("=", ":");
        String s2 = s.replaceAll("(id|name)\\s*=\\s*(\\w+)","$1=\"$2\"");
        String s3 = s2.replaceAll("(\\w+)\\s*=","\"$1\":");
        List<IncBoxParamVo> incBoxParamVos = JSONArray.parseArray(s3, IncBoxParamVo.class);
//        String s2 = s1.replaceAll("(\\w+)\\s*:","\"$1\":");
//        String s3 = s2.replaceAll("(\w+)\s*=\s*(\w+)");
        //System.out.println("s = " + s1);
        System.out.println("s = " + s2);
        System.out.println("s = " + s3);
        //List<IncBoxParamVo> incBoxParamVos = JSONArray.parseArray(s3, IncBoxParamVo.class);
    }

    @Test
    public void test25() throws ParseException, InterruptedException, IllegalAccessException {
        String s = "[{id=0,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=0,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=100,length_abrasion=0,max_time_usage=0,name=0,radius=0,radius_abrasion=0,time_usage=0},{id=1,key_value={ACC=0,ANGLE=+0,CUR_TIME=18.35,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=-0.994,L=+132.1773,L-OFFS=+0,LAST_USE=14:38:47,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9131351,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+6,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=1,T-ANGLE=+0,TIME1=10,TIME2=120,TL=0,TYP=0,alarm_time_usage=10,position=7},length=132.1773,length_abrasion=0,max_time_usage=120,name=9131351,radius=6,radius_abrasion=0,time_usage=18.35},{id=2,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+128,L-OFFS=+0,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9131351,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+6,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=2,T-ANGLE=+0,TIME1=10,TIME2=120,TL=0,TYP=0,alarm_time_usage=10,position=38},length=128,length_abrasion=0,max_time_usage=120,name=9131351,radius=6,radius_abrasion=0,time_usage=0},{id=3,key_value={ACC=0,ANGLE=+0,CUR_TIME=9.18,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+124.1574,L-OFFS=+0,LAST_USE=14:05:56,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9132351,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+6,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=3,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=9},length=124.1574,length_abrasion=0,max_time_usage=60,name=9132351,radius=6,radius_abrasion=0,time_usage=9.18},{id=4,key_value={ACC=0,ANGLE=+0,CUR_TIME=8.73,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+106.5424,L-OFFS=+0,LAST_USE=14:40:24,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9127251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+4,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=4,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=20},length=106.5424,length_abrasion=0,max_time_usage=60,name=9127251,radius=4,radius_abrasion=0,time_usage=8.73},{id=5,key_value={ACC=0,ANGLE=+0,CUR_TIME=46.08,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+118.0472,L-OFFS=+0,LAST_USE=10:33:49,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9130301,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=5,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=40},length=118.0472,length_abrasion=0,max_time_usage=60,name=9130301,radius=5,radius_abrasion=0,time_usage=46.08},{id=6,key_value={ACC=0,ANGLE=+0,CUR_TIME=49,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+103.2774,L-OFFS=+0,LAST_USE=14:16:06,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9119201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2.5,R-OFFS=+0,R2=+0.954,R2TOL=0,RBREAK=0,RTOL=0,T=6,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=24},length=103.2774,length_abrasion=0,max_time_usage=60,name=9119201,radius=2.5,radius_abrasion=0,time_usage=49},{id=7,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9155201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+3,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=7,T-ANGLE=+0,TIME1=10,TIME2=35,TL=0,TYP=0,alarm_time_usage=10,position=41},length=100,length_abrasion=0,max_time_usage=35,name=9155201,radius=3,radius_abrasion=0,time_usage=0},{id=8,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=-2.709,L=+100,L-OFFS=+0,LBREAK=0.3,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9153201,P1=35,P2=75,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=8,T-ANGLE=+0,TIME1=10,TIME2=30,TL=0,TYP=0,alarm_time_usage=10,position=19},length=100,length_abrasion=0,max_time_usage=30,name=9153201,radius=2,radius_abrasion=0,time_usage=0},{id=9,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LAST_USE=13:24:08,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9107201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=9,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=13},length=100,length_abrasion=0,max_time_usage=60,name=9107201,radius=1.5,radius_abrasion=0,time_usage=0},{id=10,key_value={ACC=0,ANGLE=+0,CUR_TIME=20.05,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+101.1171,L-OFFS=+0,LAST_USE=10:32:30,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9155201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+3,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=10,T-ANGLE=+0,TIME1=10,TIME2=35,TL=0,TYP=0,alarm_time_usage=10,position=37},length=101.1171,length_abrasion=0,max_time_usage=35,name=9155201,radius=3,radius_abrasion=0,time_usage=20.05},{id=11,key_value={ACC=0,ANGLE=+0,CUR_TIME=18.02,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+103.3947,L-OFFS=+0,LAST_USE=10:35:17,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9105201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.25,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=11,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=45},length=103.3947,length_abrasion=0,max_time_usage=60,name=9105201,radius=1.25,radius_abrasion=0,time_usage=18.02},{id=12,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9115201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=12,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=48},length=100,length_abrasion=0,max_time_usage=60,name=9115201,radius=2,radius_abrasion=0,time_usage=0},{id=13,key_value={ACC=0,ANGLE=+0,CUR_TIME=37.72,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+106.0637,L-OFFS=+0,LAST_USE=10:46:03,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9107251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=13,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=50},length=106.0637,length_abrasion=0,max_time_usage=60,name=9107251,radius=1.5,radius_abrasion=0,time_usage=37.72},{id=14,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+120,L-OFFS=+0,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9024351,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=14,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=30},length=120,length_abrasion=0,max_time_usage=60,name=9024351,radius=1.5,radius_abrasion=0,time_usage=0},{id=15,key_value={ACC=0,ANGLE=+0,CUR_TIME=54.22,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+137.1102,L-OFFS=+0,LAST_USE=14:07:52,LBREAK=1,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9029451,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=15,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=31},length=137.1102,length_abrasion=0,max_time_usage=60,name=9029451,radius=2,radius_abrasion=0,time_usage=54.22},{id=16,key_value={ACC=0,ANGLE=+0,CUR_TIME=13.18,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+105.0789,L-OFFS=+0,LAST_USE=22:03:57,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9154251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=16,T-ANGLE=+0,TIME1=10,TIME2=30,TL=0,TYP=0,alarm_time_usage=10,position=39},length=105.0789,length_abrasion=0,max_time_usage=30,name=9154251,radius=2.5,radius_abrasion=0,time_usage=13.18},{id=17,key_value={ACC=0,ANGLE=+0,CUR_TIME=2.6,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=-1.778,L=+108.4803,L-OFFS=+0,LAST_USE=14:13:38,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9153251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=17,T-ANGLE=+0,TIME1=10,TIME2=30,TL=0,TYP=0,alarm_time_usage=10,position=16},length=108.4803,length_abrasion=0,max_time_usage=30,name=9153251,radius=2,radius_abrasion=0,time_usage=2.6},{id=18,key_value={ACC=0,ANGLE=+0,CUR_TIME=21.47,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+102.3863,L-OFFS=+0,LAST_USE=10:31:48,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9153201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=18,T-ANGLE=+0,TIME1=10,TIME2=35,TL=0,TYP=0,alarm_time_usage=10,position=44},length=102.3863,length_abrasion=0,max_time_usage=35,name=9153201,radius=2,radius_abrasion=0,time_usage=21.47},{id=19,key_value={ACC=0,ANGLE=+0,CUR_TIME=51.45,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+106.3663,L-OFFS=+0,LAST_USE=10:43:04,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9115201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=19,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=12},length=106.3663,length_abrasion=0,max_time_usage=60,name=9115201,radius=2,radius_abrasion=0,time_usage=51.45},{id=20,key_value={ACC=0,ANGLE=+0,CUR_TIME=39.13,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+136.2824,L-OFFS=+0,LAST_USE=22:37:37,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9002461,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+3.06,R-OFFS=+0,R2=+0.684,R2TOL=0,RBREAK=0,RTOL=0,T=20,T-ANGLE=+0,TIME1=10,TIME2=75,TL=0,TYP=0,alarm_time_usage=10,position=1},length=136.2824,length_abrasion=0,max_time_usage=75,name=9002461,radius=3.06,radius_abrasion=0,time_usage=39.13},{id=21,key_value={ACC=0,ANGLE=+0,CUR_TIME=35.15,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+100.5024,L-OFFS=+0,LAST_USE=14:11:27,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9123201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+3,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=21,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=49},length=100.5024,length_abrasion=0,max_time_usage=60,name=9123201,radius=3,radius_abrasion=0,time_usage=35.15},{id=22,key_value={ACC=0,ANGLE=+0,CUR_TIME=35.25,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=-0.36,L=+103.2672,L-OFFS=+0,LAST_USE=14:28:38,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9120201,P1=35,P2=75,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=22,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=23},length=103.2672,length_abrasion=0,max_time_usage=60,name=9120201,radius=2.5,radius_abrasion=0,time_usage=35.25},{id=23,key_value={ACC=0,ANGLE=+0,CUR_TIME=27.37,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+103.4176,L-OFFS=+0,LAST_USE=14:17:57,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9115251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=23,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=35},length=103.4176,length_abrasion=0,max_time_usage=60,name=9115251,radius=2,radius_abrasion=0,time_usage=27.37},{id=24,key_value={ACC=0,ANGLE=+0,CUR_TIME=28.6,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=-0.305,L=+111.451,L-OFFS=+0,LAST_USE=14:15:10,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9153301,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=24,T-ANGLE=+0,TIME1=10,TIME2=30,TL=0,TYP=0,alarm_time_usage=10,position=52},length=111.451,length_abrasion=0,max_time_usage=30,name=9153301,radius=2,radius_abrasion=0,time_usage=28.6},{id=25,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9123201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+3,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=25,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=51},length=100,length_abrasion=0,max_time_usage=60,name=9123201,radius=3,radius_abrasion=0,time_usage=0},{id=26,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9127251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+4,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=26,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=33},length=100,length_abrasion=0,max_time_usage=60,name=9127251,radius=4,radius_abrasion=0,time_usage=0},{id=27,key_value={ACC=0,ANGLE=+0,CUR_TIME=15.02,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+130.832,L-OFFS=+0,LAST_USE=14:20:56,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9025401,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.7,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=27,T-ANGLE=+0,TIME1=10,TIME2=40,TL=0,TYP=0,alarm_time_usage=10,position=54},length=130.832,length_abrasion=0,max_time_usage=40,name=9025401,radius=1.7,radius_abrasion=0,time_usage=15.02},{id=28,key_value={ACC=0,ANGLE=+0,CUR_TIME=31.83,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+102.8595,L-OFFS=+0,LAST_USE=14:29:26,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9107201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=28,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=46},length=102.8595,length_abrasion=0,max_time_usage=60,name=9107201,radius=1.5,radius_abrasion=0,time_usage=31.83},{id=29,key_value={ACC=0,ANGLE=+0,CUR_TIME=5.73,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+111.7175,L-OFFS=+0,LAST_USE=14:12:42,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9152301,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=29,T-ANGLE=+0,TIME1=10,TIME2=20,TL=0,TYP=0,alarm_time_usage=10,position=47},length=111.7175,length_abrasion=0,max_time_usage=20,name=9152301,radius=1.5,radius_abrasion=0,time_usage=5.73},{id=30,key_value={ACC=0,ANGLE=+0,CUR_TIME=33.75,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+101.825,L-OFFS=+0,LAST_USE=10:44:16,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9152201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=30,T-ANGLE=+0,TIME1=10,TIME2=40,TL=0,TYP=0,alarm_time_usage=10,position=5},length=101.825,length_abrasion=0,max_time_usage=40,name=9152201,radius=1.5,radius_abrasion=0,time_usage=33.75},{id=31,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+105,L-OFFS=+0,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9152301,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+1.5,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=31,T-ANGLE=+0,TIME1=10,TIME2=20,TL=0,TYP=0,alarm_time_usage=10,position=32},length=105,length_abrasion=0,max_time_usage=20,name=9152301,radius=1.5,radius_abrasion=0,time_usage=0},{id=32,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+105,L-OFFS=+0,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9119201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+2.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=32,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=18},length=105,length_abrasion=0,max_time_usage=60,name=9119201,radius=2.5,radius_abrasion=0,time_usage=0},{id=33,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+105,L-OFFS=+0,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9153301,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+2,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=33,T-ANGLE=+0,TIME1=10,TIME2=30,TL=0,TYP=0,alarm_time_usage=10,position=43},length=105,length_abrasion=0,max_time_usage=30,name=9153301,radius=2,radius_abrasion=0,time_usage=0},{id=34,key_value={ACC=0,ANGLE=+0,CUR_TIME=6.57,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+111.4539,L-OFFS=+0,LAST_USE=14:18:35,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9119301,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=34,T-ANGLE=+0,TIME1=10,TIME2=50,TL=0,TYP=0,alarm_time_usage=10,position=34},length=111.4539,length_abrasion=0,max_time_usage=50,name=9119301,radius=2.5,radius_abrasion=0,time_usage=6.57},{id=35,key_value={ACC=0,ANGLE=+0,CUR_TIME=25.67,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+102.2139,L-OFFS=+0,LAST_USE=10:57:38,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9108201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=35,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=53},length=102.2139,length_abrasion=0,max_time_usage=60,name=9108201,radius=1.5,radius_abrasion=0,time_usage=25.67},{id=36,key_value={ACC=0,ANGLE=+0,CUR_TIME=12.7,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+101.2161,L-OFFS=+0,LAST_USE=14:06:46,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9115201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=36,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=2},length=101.2161,length_abrasion=0,max_time_usage=60,name=9115201,radius=2,radius_abrasion=0,time_usage=12.7},{id=37,key_value={ACC=0,ANGLE=+0,CUR_TIME=11.22,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=-6.582,L=+130.5717,L-OFFS=+0,LAST_USE=14:31:49,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9024351,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=37,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=42},length=130.5717,length_abrasion=0,max_time_usage=60,name=9024351,radius=1.5,radius_abrasion=0,time_usage=11.22},{id=38,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9120201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+2.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=38,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=29},length=100,length_abrasion=0,max_time_usage=60,name=9120201,radius=2.5,radius_abrasion=0,time_usage=0},{id=39,key_value={ACC=0,ANGLE=+0,CUR_TIME=15.08,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+106.3605,L-OFFS=+0,LAST_USE=14:27:42,LBREAK=1,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=4501252,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2.25,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=39,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=14},length=106.3605,length_abrasion=0,max_time_usage=60,name=4501252,radius=2.25,radius_abrasion=0,time_usage=15.08},{id=40,key_value={ACC=0,ANGLE=+0,CUR_TIME=40.15,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+125.8162,L-OFFS=+0,LAST_USE=14:19:15,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9001451,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=40,T-ANGLE=+0,TIME1=10,TIME2=75,TL=0,TYP=0,alarm_time_usage=10,position=27},length=125.8162,length_abrasion=0,max_time_usage=75,name=9001451,radius=2.5,radius_abrasion=0,time_usage=40.15},{id=41,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9105201,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+1.25,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=41,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=6},length=100,length_abrasion=0,max_time_usage=60,name=9105201,radius=1.25,radius_abrasion=0,time_usage=0},{id=42,key_value={ACC=0,ANGLE=+0,CUR_TIME=13.68,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+116.108,L-OFFS=+0,LAST_USE=13:02:37,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9055403,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.75,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=42,T-ANGLE=+0,TIME1=10,TIME2=30,TL=0,TYP=0,alarm_time_usage=10,position=36},length=116.108,length_abrasion=0,max_time_usage=30,name=9055403,radius=1.75,radius_abrasion=0,time_usage=13.68},{id=43,key_value={ACC=0,ANGLE=+0,CUR_TIME=16.05,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+203.3767,L-OFFS=+0,LAST_USE=14:34:28,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=9057335,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=43,T-ANGLE=+0,TIME1=10,TIME2=30,TL=0,TYP=0,alarm_time_usage=10,position=28},length=203.3767,length_abrasion=0,max_time_usage=30,name=9057335,radius=2,radius_abrasion=0,time_usage=16.05},{id=44,key_value={ACC=0,ANGLE=+0,CUR_TIME=14.27,CUT=0,DIRECT=+0,DL=+0,DR=+0,DR2=+0,L=+163.4413,L-OFFS=+0,LAST_USE=10:55:45,LBREAK=0.5,LCUTS=+0,LIFTOFF=1,LTOL=0,NAME=2401,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=44,T-ANGLE=+0,TIME1=10,TIME2=44,TL=0,TYP=0,alarm_time_usage=10,position=21},length=163.4413,length_abrasion=0,max_time_usage=44,name=2401,radius=1.5,radius_abrasion=0,time_usage=14.27},{id=45,key_value={ACC=0,ANGLE=+0,CUR_TIME=16.07,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+105.3685,L-OFFS=+0,LAST_USE=14:25:22,LBREAK=0.5,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=4501251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+2.25,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=45,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=26},length=105.3685,length_abrasion=0,max_time_usage=60,name=4501251,radius=2.25,radius_abrasion=0,time_usage=16.07},{id=46,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+100,L-OFFS=+0,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9153251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000111,PLC-VAL=0,PTYP=0,R=+2,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=46,T-ANGLE=+0,TIME1=10,TIME2=30,TL=0,TYP=0,alarm_time_usage=10,position=3},length=100,length_abrasion=0,max_time_usage=30,name=9153251,radius=2,radius_abrasion=0,time_usage=0},{id=47,key_value={ACC=0,ANGLE=+0,CUR_TIME=9.12,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+104.5127,L-OFFS=+0,LAST_USE=14:04:40,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9128251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+4,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=47,T-ANGLE=+0,TIME1=10,TIME2=60,TL=0,TYP=0,alarm_time_usage=10,position=25},length=104.5127,length_abrasion=0,max_time_usage=60,name=9128251,radius=4,radius_abrasion=0,time_usage=9.12},{id=48,key_value={ACC=0,ANGLE=+0,CUR_TIME=13.75,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+106.2871,L-OFFS=+0,LAST_USE=14:23:02,LBREAK=0.3,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=9152251,P1=35,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00010111,PLC-VAL=0,PTYP=0,R=+1.5,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=48,T-ANGLE=+0,TIME1=10,TIME2=35,TL=0,TYP=0,alarm_time_usage=10,position=22},length=106.2871,length_abrasion=0,max_time_usage=35,name=9152251,radius=1.5,radius_abrasion=0,time_usage=13.75},{id=55,key_value={ACC=0,ANGLE=+0,CUR_TIME=0.42,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,KINEMATIC=TC52HSK63210465.CFG,L=+180.6966,L-OFFS=+0,LAST_USE=13:33:11,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,NAME=MESSTASTER,P1=30,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00100000,PLC-VAL=0,PTYP=0,R=+1.322,R-OFFS=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=55,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TP_NO=1,TYP=21,alarm_time_usage=0,position=55},length=180.6966,length_abrasion=0,max_time_usage=0,name=MESSTASTER,radius=1.322,radius_abrasion=0,time_usage=0.42},{id=76,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=76,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=77,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=77,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=78,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=78,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=79,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=79,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=80,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=80,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=81,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=81,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=82,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=82,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=83,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=83,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=84,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=84,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=85,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=85,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=86,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=86,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=87,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=87,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=88,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=88,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=89,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=89,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=90,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=90,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=91,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=91,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=92,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=92,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=93,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=93,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=94,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=94,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=95,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=95,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=96,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=96,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0},{id=97,key_value={ACC=0,ANGLE=+0,CUR_TIME=0,CUT=0,DIRECT=-1,DL=+0,DR=+0,DR2=+0,L=+0,L-OFFS=+0,LBREAK=0,LCUTS=+0,LIFTOFF=0,LTOL=0,P1=0,P2=0,P3=0,P4=0,P5=0,P6=0,P7=0,P8=0,PITCH=+0,PLC=%00000000,PLC-VAL=0,PTYP=0,R=+0,R2=+0,R2TOL=0,RBREAK=0,RTOL=0,T=97,T-ANGLE=+0,TIME1=0,TIME2=0,TL=0,TYP=99,alarm_time_usage=0},length=0,length_abrasion=0,max_time_usage=0,name=,radius=0,radius_abrasion=0,time_usage=0}]";
//        String s3 = s.replaceAll("([\\w-]+)\\s*=\\s*([+-:%.\\w]+)\\s*","\"$1\":\"$2\"");
//        String s4 = s3.replaceAll("(\"id\"|\"name\":)\\s*,","$1\" \"");
//        String s5 = s4.replaceAll("\\+","");
        String s1 = s.replaceAll("([-\\w]+)=","\"$1\":");
        String s2 = s1.replaceAll(":\\s*([-+%.:\\w]+)",":\"$1\"");
        String s3 = s2.replaceAll("(\"id\"|\"name\"):\\s*,","$1:\" \",");
        System.out.println("s5 = " + s3);
        List<IncBoxParamVo> incBoxParamVos = JSONArray.parseArray(s3, IncBoxParamVo.class);
        //CommonUtil.parseToolParams(s5);
        //List<IncBoxParamVo> incBoxParamVos = JSONArray.parseArray(s3, IncBoxParamVo.class);
    }

    @Test
    public void test26() throws ParseException, InterruptedException, IllegalAccessException {
        Integer i = 10;
        int j = i /10;
        System.out.println("j = " + j);
    }

    @Test
    public void test29() throws ParseException, InterruptedException, IllegalAccessException {
        String life = "200h";
        String substring = life.substring(0, life.length()-1);
        System.out.println("retMap = " + substring);
    }

    @Test
    public void test30() throws ParseException, InterruptedException, IllegalAccessException {
        List<String> resultList = new ArrayList<>();
        String ccws = "ZYL01F9000****ZYL01G1000****";
        //1-3位(index=0)
        resultList.add(ccws.substring(0, 3));
        //4-5位(index=1)
        resultList.add(ccws.substring(3,5));
        //6位(index=2)
        if(ccws.charAt(5) == 'F'){
            resultList.add((Integer.parseInt(ccws.substring(6,10))/1000)+"");
        } else if (ccws.charAt(5) == 'G') {
            resultList.add((Integer.parseInt(ccws.substring(6,10))/100)+"");
        } else if (ccws.charAt(5) == 'H'){
            resultList.add((Integer.parseInt(ccws.substring(6,10))/10)+"");
        }
        //28位
        if(ccws.charAt(19) == 'F'){
            resultList.add((Integer.parseInt(ccws.substring(20,24))/1000)+"");
        } else if (ccws.charAt(19) == 'G') {
            resultList.add((Integer.parseInt(ccws.substring(20,24))/100)+"");
        } else if (ccws.charAt(19) == 'H'){
            resultList.add((Integer.parseInt(ccws.substring(20,24))/10)+"");
        }
        System.out.println("ccws = " + resultList);
    }

    @Test
    public void test31() throws ParseException, InterruptedException, IllegalAccessException {
        List<MachineToolDataLog> machineToolDataLogs = new ArrayList<>();
        MachineToolDataLog machineToolDataLog = new MachineToolDataLog();
        MachineToolDataLog machineToolDataLog1 = new MachineToolDataLog();
        MachineToolDataLog machineToolDataLog2 = new MachineToolDataLog();
        MachineToolDataLog machineToolDataLog3 = new MachineToolDataLog();
        MachineToolDataLog machineToolDataLog4 = new MachineToolDataLog();
        MachineToolDataLog machineToolDataLog5 = new MachineToolDataLog();
        machineToolDataLog.setMachineToolTaskId(1);
        machineToolDataLog1.setMachineToolTaskId(2);
        machineToolDataLog2.setMachineToolTaskId(2);
        machineToolDataLog3.setMachineToolTaskId(2);
        machineToolDataLog4.setMachineToolTaskId(3);
        machineToolDataLog5.setMachineToolTaskId(4);

        machineToolDataLog.setTime(3.0);
        machineToolDataLog1.setTime(3.0);
        machineToolDataLog2.setTime(3.0);
        machineToolDataLog3.setTime(3.0);
        machineToolDataLog4.setTime(3.0);
        machineToolDataLog5.setTime(3.0);

        machineToolDataLogs.add(machineToolDataLog);
        machineToolDataLogs.add(machineToolDataLog1);
        machineToolDataLogs.add(machineToolDataLog2);
        machineToolDataLogs.add(machineToolDataLog3);
        machineToolDataLogs.add(machineToolDataLog4);
        machineToolDataLogs.add(machineToolDataLog5);
        System.out.println(machineToolDataLogs.size());
    }

    @Test
    public void test35() throws ParseException, InterruptedException, IllegalAccessException {
        String folderPath = "/"; // 指定要读取的文件夹路径
        String username = "dj2admin"; // 替换为您的用户名
        String password = "admin1234"; // 替换为您的密码
        String serverUrl = "http://192.168.252.53"; // 替换为远程服务器的URL
        try {
            URL url = new URL(serverUrl + folderPath);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(5000); // 设置连接超时时间（毫秒）
            connection.setInstanceFollowRedirects(false); // 禁止自动跟随重定向
            connection.setDoOutput(false); // 允许向服务器输出内容
           // connection.setRequestProperty("Authorization", "Basic " + java.util.Base64.getEncoder().encodeToString((username + ":" + password).getBytes())); // 设置身份验证信息头
            int responseCode = connection.getResponseCode(); // 获取响应码
            if (responseCode == 200) { // 如果响应码为200，表示请求成功
                try (InputStream inputStream = connection.getInputStream()) {
                    Stream<Path> paths = Files.walk(Paths.get(folderPath));
                    paths.filter(Files::isRegularFile) // 过滤出所有普通文件
                            .forEach(System.out::println); // 输出每个文件的路径
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    connection.disconnect(); // 断开连接
                }
            } else { // 如果响应码不为200，表示请求失败
                System.out.println("Failed to access the file, response code: " + responseCode);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test36() throws ParseException, InterruptedException, IllegalAccessException {

//            String folderPath = "/"; // 指定要读取的文件夹路径
//            String username = "hzsk"; // 替换为您的用户名
//            String password = "123456"; // 替换为您的密码
//            String serverUrl = "http://192.168.252.230"; // 替换为远程服务器的URL
            try {
                String remotePhotoUrl = "smb://dj2admin:admin1234@192.168.2.156/5-axis/431-438/435/7001-7099/";
                SmbFile smbFile = new SmbFile(remotePhotoUrl);
                smbFile.connect(); //尝试连接
                List<String> fileNames = new ArrayList<>();
                int i = 2;
                //fun(smbFile , fileNames , i , 0);
                System.out.println("fileNames = " + fileNames);
//                if(smbFile.isDirectory()){//判断是否是文件夹，判断是否是文件：smbFile.isFile(),这个跟java.io.File的方法类似
//                    SmbFile[] listFiles = smbFile.listFiles();//获取所有文件
//                    System.out.println(listFiles.length);//文件数量
//                    for (SmbFile smbFile2 : listFiles) {
//                        System.out.println(smbFile2.getName());//文件名
//     //InputStream is = smbFile2.getInputStream();//获取输入流
//                        System.out.println(smbFile2.getPath());//smb协议下的服务器文件路径
//                    }
//                }

            } catch (IOException e) {
                e.printStackTrace();
            }

            System.out.println("Hello world!");
    }

    @Test
    public void test37() throws ParseException, InterruptedException, IllegalAccessException {

//            String folderPath = "/"; // 指定要读取的文件夹路径
//            String username = "hzsk"; // 替换为您的用户名
//            String password = "123456"; // 替换为您的密码
//            String serverUrl = "http://192.168.252.230"; // 替换为远程服务器的URL
        try {
            String remotePhotoUrl = "smb://dj2admin:admin1234@192.168.2.156/5-axis/431-438/";
            SmbFile smbFile = new SmbFile(remotePhotoUrl);
            smbFile.connect(); //尝试连接
            List<String> fileNames = new ArrayList<>();
            int i = 4;
            i--;
            fun(smbFile , fileNames , i , 0);
            System.out.println("fileNames = " + fileNames.size());
            System.out.println("fileNames = " + fileNames);
            fileNames = fileNames.stream().distinct().collect(Collectors.toList());
            System.out.println("fileNames = " + fileNames.size());

            //TO DO 处理路径
            fileNames.forEach(s -> {
                String[] split = s.split("\\/");
                System.out.println("物料编码 ：" + split[7] + "|" +"对应程序 ：" + split[8]);
            });
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("Hello world!");


    }

    @Test
    public void test38() throws ParseException, InterruptedException, IllegalAccessException {
        List<String> strings = new ArrayList<>();
        strings.add("435");
        String s = "435";
        String s1 = "4353";
        String s2 = "43";
        String s3 = "43a";
        Pattern compile = Pattern.compile("[0-9]*");
        if(s.matches("[0-9]{3}")){
            strings.add(s);
        }
        if(s1.matches("[0-9]{3}")){
            strings.add(s1);
        }
        if(s2.matches("[0-9]{3}")){
            strings.add(s2);
        }
        if(s3.matches("[0-9]{3}")){
            strings.add(s3);
        }
        System.out.println("strings = " + strings);
    }

    @Test
    public void test39() throws ParseException, InterruptedException, IllegalAccessException {
        String iic = "ISO$TC16T3043NA$$04";
        List<String> resultList = new ArrayList<>();
        //1-10位(index=0)
        resultList.add(iic.substring(0, 10));
        //11-12位(index=1)
        resultList.add(iic.substring(10,12));
        //13位(index=2)
        resultList.add(iic.substring(12,13));
        //14位(index=3)
        resultList.add(iic.substring(13,14));
        //15位(index=4)
        resultList.add(iic.substring(14,15));
        //18-19位(index=5)
        resultList.add(iic.substring(17,19));
        //16-17位(index=6)
        resultList.add(iic.substring(15,17));
        System.out.println("resultList = " + resultList);
    }

    @Test
    public void test40() throws ParseException, InterruptedException, IllegalAccessException {
        String iic = "SZD02C0160$$$$";
        List<String> resultList = new ArrayList<>();
        //1-3位(index=0)
        resultList.add(iic.substring(0, 3));
        //4-5位(index=1)
        resultList.add(iic.substring(3,5));
        //6-10位(index=2)
        resultList.add(iic.substring(5,10));
        System.out.println("resultList = " + resultList);
    }

    @Test
    public void test41() throws ParseException, InterruptedException, IllegalAccessException {
        String str = "ISO$TC1102043NA$$04";
        String str1 = "ISO$TC1102..3.A....";

        String str2 = str1.replaceAll("\\$" , "\\\\\\$");
        System.out.println("str2 = " + str2);
        //System.out.println("str1 = " + str1.replaceAll("\\$" , "\\\\\\\\\\$"));
        //System.out.println("str1 = " + str1.replaceAll("\\$" , "$"));
        //System.out.println("str1 = " + str1.replaceAll("\\\\" , "\\"));
        System.out.println("result " + str.matches(str2));
        List<String> strings = new ArrayList<>();
        System.out.println();
    }

    @Test
    public void test42() throws ParseException, InterruptedException, IllegalAccessException {
        String str = "04";
        String str1 = "32";
        int i = Integer.parseInt(str);
        int i1 = Integer.parseInt(str1);
        if(i<i1){
            System.out.println(true);
        }
        System.out.println(false);
    }

    @Test
    public void test43() throws ParseException, InterruptedException, IllegalAccessException {
        toolLifeMap.put("1",1.1);
        ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(4);
        scheduledThreadPool.scheduleWithFixedDelay(()->{
            System.out.println("toolLifeMap = " + toolLifeMap);
            toolLifeMap.put("1",1.2);
        },1l,1L, TimeUnit.SECONDS);

        Thread.sleep(3000L);

    }

    @Test
    public void test44(){
        List<IncBoxParamVo> incBoxParamVos = new ArrayList<>();
        IncBoxParamVo incBoxParamVo = new IncBoxParamVo();
        IncBoxParamVo incBoxParamVo1 = new IncBoxParamVo();
        IncBoxParamVo incBoxParamVo2 = new IncBoxParamVo();
        IncBoxParamVo incBoxParamVo3 = new IncBoxParamVo();
        incBoxParamVo.setName("");
        incBoxParamVo1.setName("123");
        incBoxParamVo2.setName("23");
        incBoxParamVos.add(incBoxParamVo);
        incBoxParamVos.add(incBoxParamVo1);
        incBoxParamVos.add(incBoxParamVo2);
        incBoxParamVos.add(incBoxParamVo3);
        List<IncBoxParamVo> incBoxParamVos1 = incBoxParamVos
                .stream()
                .filter(incBoxParamVo4 -> StringUtil.isNotEmpty(incBoxParamVo4.getName()))
                .collect(Collectors.toList());
        System.out.println("incBoxParamVos1 = " + incBoxParamVos1.size());
    }

    @Test
    public void test45(){
        Calendar calendar = Calendar.getInstance();
        Date currentTime = calendar.getTime();

        calendar.setTime(currentTime);
//        int minutes = calendar.get(Calendar.MINUTE);
//        int minutesToPreviousHour = minutes % 60;

        calendar.add(Calendar.MINUTE, -30);
        Date previousHour = calendar.getTime();

        System.out.println("上一个整点时间: " + previousHour);

    }

    @Test
    public void test46() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<DateVo> dateVos = CommonUtil.splitDate(sdf.parse("2023-10-10"),
                sdf.parse("2023-10-13"),
                sdf.parse("2023-10-10"),
                sdf.parse("2023-10-10 23:59:59"));
        dateVos.stream().forEach(dateVo -> System.out.println("dateVo = " + dateVo.getStartTime() +"dateVo =" + dateVo.getEndTime()));
    }

    @Test
    public void test47() throws ParseException {
        LocalDateTime localDateTime =
                LocalDateTime.parse("2023-11-05 00:00:00" ,
                        DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        LocalDateTime startDay = LocalDateTime.of(localDateTime.toLocalDate() , LocalTime.MIN);
        LocalDateTime endDay = LocalDateTime.of(localDateTime.toLocalDate() , LocalTime.MAX);

        System.out.println("startDay = " + startDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        System.out.println("endDay = " + endDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    }

    @Test
    public void test48() throws ParseException {
        String url = "http://dtl.zccct.com:8188/images/6406R/20200924/13475921wangchunxiu.png";
        String[] split = url.split("\\/");
        System.out.println("split = " + split[split.length-1]);
        System.out.println("Arrays.toString(split) = " + Arrays.toString(split));
    }

    @Test
    public void test49() throws ParseException, IOException {
        //Integer i = 1700644659495;
        List<Integer> ids= new ArrayList<>();
        System.out.println("ids = " + ids.size());
    }

    @Test
    public void test50() throws ParseException, IOException {
        Calendar cal = Calendar.getInstance();
        cal.set(2023,10,24 , 13,59,22);
        System.out.println("cal.getTime() = " + cal.getTime());
    }

    @Test
    public void test51() throws ParseException, IOException {
        String date = "2023/10/27";
        String[] split = date.split("\\/");
        System.out.println("split = " + Arrays.toString(split));
        String date1 = "11:05:57";
        System.out.println("date1 = " + date1.substring(0,2));
        String[] split1 = date1.split(":");
        System.out.println("split = " + Arrays.toString(split1));
    }

    @Test
    public void test52() throws ParseException, IOException {
        String program = "TNC:\\tnc\\fma12-040-xp32-on06-04-C22\\MAIN_1.h";
        String[] split = program.split("\\\\");
        String[] split1 = program.split("\\/");
        System.out.println("split = " + split.length);
        System.out.println("split = " + split1.length);
    }

    @Test
    public void test56() throws ParseException, IOException {
        String program = "TNC:\\tnc\\fma12-040-xp32-on06-04-C22\\MAIN_1.h";
        String[] split = program.split("\\\\");
        String[] split1 = program.split("\\/");
        System.out.println("split = " + split.length);
        System.out.println("split = " + split1.length);
    }

    @Test
    public void test53() throws ParseException, IOException {
        ToolDemandPredictionVo toolDemandPredictionVo = new ToolDemandPredictionVo();
        toolDemandPredictionVo.setId(1);
        toolDemandPredictionVo.setToolCode("T1");
        ToolDemandPredictionVo toolDemandPredictionVo1 = new ToolDemandPredictionVo();
        toolDemandPredictionVo1.setId(1);
        toolDemandPredictionVo1.setToolCode("T1");
        ToolDemandPredictionVo toolDemandPredictionVo2 = new ToolDemandPredictionVo();
        toolDemandPredictionVo2.setId(3);
        toolDemandPredictionVo2.setToolCode("T12");
        ToolDemandPredictionVo toolDemandPredictionVo3 = new ToolDemandPredictionVo();
        toolDemandPredictionVo3.setId(1);
        toolDemandPredictionVo3.setToolCode("T1");
        ToolDemandPredictionVo toolDemandPredictionVo4 = new ToolDemandPredictionVo();
        toolDemandPredictionVo4.setId(1);
        toolDemandPredictionVo4.setToolCode("T12");
        ToolDemandPredictionVo toolDemandPredictionVo5 = new ToolDemandPredictionVo();
        toolDemandPredictionVo5.setId(2);
        toolDemandPredictionVo5.setToolCode("T12");
        List<ToolDemandPredictionVo> filterList = new ArrayList<>();
        filterList.add(toolDemandPredictionVo);
        filterList.add(toolDemandPredictionVo1);
        filterList.add(toolDemandPredictionVo2);
        filterList.add(toolDemandPredictionVo3);
        filterList.add(toolDemandPredictionVo4);
        filterList.add(toolDemandPredictionVo5);
        List<ToolDemandPredictionVo> collect = filterList.stream().distinct().collect(Collectors.toList());
        System.out.println("collect = " + collect.size());
        //System.out.println("queryToolForkInfoReq = " + StringUtils.isNotEmpty(queryToolForkInfoReq.getIic()));
    }

    @Test
    public void test54() throws ParseException, IOException {
        String str = "http://dtl.zccct.com:8188/images/6406R/20200924/13475921wangchunxiu.png";
        String[] split = str.split("\\/");
        String str1 = "";
        System.out.println("collect = " + split[split.length-1]);
        //System.out.println("queryToolForkInfoReq = " + StringUtils.isNotEmpty(queryToolForkInfoReq.getIic()));
    }

    @Test
    public void test55() throws ParseException, IOException {
        ToolPartEntity toolPartEntity = new ToolPartEntity();
        System.out.println("StringUtils.isNotBlank(toolPartEntity.getTimeUsage()) = " + StringUtils.isNotBlank(toolPartEntity.getTimeUsage()));
        //System.out.println("queryToolForkInfoReq = " + StringUtils.isNotEmpty(queryToolForkInfoReq.getIic()));
    }

    @Test
    public void test60() throws ParseException, IOException {
        List<ToolForkCountVo> countVos = new ArrayList<>();
        ToolForkCountVo toolForkCountVo = new ToolForkCountVo();
        toolForkCountVo.setPartno("123");
        toolForkCountVo.setLife(1.0);
        ToolForkCountVo toolForkCountVo1 = new ToolForkCountVo();
        toolForkCountVo1.setPartno("1234");
        toolForkCountVo1.setLife(1.1);
        countVos.add(toolForkCountVo);
        countVos.add(toolForkCountVo1);
        List<ToolForkCountVo> result = countVos
                .stream()
                .sorted(Comparator.comparing(ToolForkCountVo::getLife))
                .collect(Collectors.toList());
        System.out.println("result = " + result.get(0).getLife());
    }

    @Test
    public void test61() throws ParseException, IOException {
        ToolForkInfoEntity toolForkInfoEntity = new ToolForkInfoEntity();
        ToolForkInfoEntity toolForkInfoEntity1 = new ToolForkInfoEntity();
        toolForkInfoEntity.setImage("123");
        toolForkInfoEntity1.setImage("1231");
        List<ToolForkInfoEntity> result = new ArrayList<>();
        result.add(toolForkInfoEntity);
        result.add(toolForkInfoEntity1);
        List<ToolForkInfoEntity> collect = result.stream().filter(distinctByKey1(ToolForkInfoEntity::getImage)).collect(Collectors.toList());
        System.out.println("result = " + collect.size());
    }

    @Test
    public void test62() {
        try {
            CloseableHttpClient httpclient = null;
            CloseableHttpResponse httpresponse = null;
            try {
                String response = null;
                httpclient = HttpClients.createDefault();
                HttpPost httppost = new
                        HttpPost("http://192.168.32.107:1883/v1/1000E0DC0001BE/data/");//HTTP 请求的地址
                HashMap<String, Object> requestBody = new HashMap<String, Object>();
                requestBody.put("operation", "get_value");
                List<Object> items = new ArrayList<>();
                //创建数据项对象并赋值
                Map<String, Object> item = new HashMap<>();
                item.put("path", "/MACHINE/STATUS");
                items.add(item);
                requestBody.put("items", items);
                ObjectMapper objectMapper = new ObjectMapper();
                //设置 ContentType
                StringEntity stringentity = new
                        StringEntity(objectMapper.writeValueAsString(requestBody),
                        ContentType.create("application/json", "UTF-8"));
                httppost.setEntity(stringentity);
                //发 post 请求
                httpresponse = httpclient.execute(httppost);
                //utf-8 参数防止中文乱码
                response = EntityUtils.toString(httpresponse.getEntity(), "utf-8");
                System.out.println(response);
            } finally {
                if (httpclient != null) {
                    httpclient.close();
                }
                if (httpresponse != null) {
                    httpresponse.close();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Test
    public void test63() {
        //boolean equals = Objects.equals("+126.475", "+126.475");
        String a = "10";
        System.out.println("equals = " + Double.parseDouble(a));
    }

    @Test
    public void test65() {
        int[] arr = {4,3,5,1,8};
        System.out.println("toolLifeMap = " + test66(arr , 0 , arr.length-1));
    }

    @Test
    public Integer test64(List<Integer> a , List<Integer> b) {
        List<Integer> fullValue = new ArrayList<>();
        //构建总价值数组
        for (int i = 0; i < a.size(); i++) {
            fullValue.add(a.get(i) + b.get(i));
        }

        //倒序
        List<Integer> sortList = fullValue
                .stream()
                .sorted(Comparator.comparingInt(Integer::intValue).reversed())
                .collect(Collectors.toList());

        //计算a与b的价值期望
        Integer aValue = 0;
        Integer bValue = 0;
        for (int i = 0; i < fullValue.size(); i++) {
            //从总价值数组中获取当前最大的数的索引值
            if(i % 2 == 0){
                //a行动
                aValue += fullValue.get(i);
            }
            //b行动
            bValue += fullValue.get(i);
        }
        //比较价值期望返回结果
        if(aValue - bValue >0){
            return 1;
        }else if(aValue == bValue){
            return 0;
        }else{
            return -1;
        }
    }

    @Test
    public int[] test66(int[] arr , Integer left , Integer right) {
//        Integer left = 0;
//        Integer right = arr.length;
        if(arr.length < 2){
            return arr;
        }
        //选择基准数
        Integer base = arr[left];
        while(left != right){
            while(right > left){
                if(arr[right] >= base) {
                    right = right - 1;
                }else {
                    //小于时将基准数和该数调换
                    arr[left] = arr[right];
                    arr[right] = base;
                    //左指针加1
                    right = right - 1;
                    break;
                }
            }

            while (right > left){
                //左指针开始与基准比较
                if(arr[left] <= base) {
                    left += 1;
                }else{
                    arr[right] = arr[left];
                    //arr[left] = base;
                    left = left + 1;
                    break;
                }
            }
        }
        arr[0] = arr[left];
        arr[left] = base;

        //right = left 时对两个序列分别递归调用
        test66(arr , 0 , left-1);
        test66(arr , left+1 , arr.length-1);
        return arr;
    }



    @Test
    public boolean test67(int n) {
        int res = 0;
        int count = 0;
        while(res < n){
            if(res + 2 + 3 < n){
                res += 2;
            } else if (res + 1 + 3  < n) {
                res += 1;
            }else {
                res +=3;
            }
            count++;
        }
        //判断count值来确认返回true还是false
        if(count % 2 == 0){
            return true;
        }else {
            return false;
        }
    }

    @Test
    public void test68() {
        List<String> testList = new ArrayList<>();
        testList.add("1");
        testList.add("2");
        testList.add("2");
        testList.add("4");
        testList.add("5");
        testList.add("6");
        List<String> strings = testList.subList(0, 1);
        List<String> strings1 = testList.subList(1, testList.size());
        System.out.println("strings = " + Collections.frequency(testList , "2"));
        System.out.println("strings = " + strings1);
        List<List<String>> lists = CommonUtil.subListBySize(testList, 1);
        System.out.println("lists = " + lists.get(0).size());
        System.out.println("lists = " + lists.get(1).size());
    }

    @Test
    public void test69() {
        Map<String, String> startAndEndOfOneDay = CommonUtil.findStartAndEndOfOneDay(CommonUtil.transferDate(new Date()));
        System.out.println("startAndEndOfOneDay = " + startAndEndOfOneDay.get("startTime"));
        System.out.println("startAndEndOfOneDay = " + startAndEndOfOneDay.get("endTime"));
    }

//    @Test
//    public void tes70() throws FileNotFoundException {
//        FileInputStream fileInputStream = new FileInputStream("http://dtl.zccct.com:8188/images/6406R/OutputJT/638491373222253328.pdf");
//        minioHelper.uploadFileWithNetFile(fileInputStream , "http://dtl.zccct.com:8188/images/6406R/OutputJT/638491373222253328.pdf");
//    }

    @Test
    public void addCourse() {
        List<String> test = new ArrayList<>();
        test.add("1");
        test.add("2");
        test.add("3");
        test.get(test.size()-1);
        System.out.println();
    }


//    @Test
//    public int[] test68(int[] a , int[] resArr , int res , int n) {
//        if(res <  n){
//            return resArr;
//        }
//        for (int i = 0; i < a.length; i++) {
//            //遍历数组 直到res大于
//            res += a[i];
//            test68(a , resArr);
//        }
//    }

    static <T> Predicate<T> distinctByKey1(Function<? super T, ?> keyExtractor) {
        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }



    private void fun(SmbFile dir , List<String> fileNames , int i , int j) throws SmbException {
        ///fileNames.add(dir.getPath())
        //System.out.println(dir.getPath());
        //调用listFiles方法对目录进行遍历
        boolean directory = dir.isDirectory();
        SmbFile[] filearr = dir.listFiles();
        for (SmbFile file : filearr){
            if (file.isDirectory()){
               if(i == j){
                    fileNames.add(file.getPath());
                    continue;
                }
                j++;
                fun(file,fileNames , i , j);//判断如果是文件夹就继续调用遍历目录下内容的方法，形成递归
                j--;
            }
        }
    }

}
